home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 41
/
Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso
/
-seriously_amiga-
/
cd-rom
/
acdb
/
src
/
acdb_gui.e
< prev
next >
Wrap
Text File
|
1999-04-28
|
5KB
|
245 lines
OPT OSVERSION=37,MODULE
OPT PREPROCESS,REG=5
/*
*-- AutoRev header do NOT edit!!
*
* Project : AMIGA CD BASE - program obsîugujâcy CDDB
* File : gui.e
* Description : obsîuga okienek programu
* Copyright : ©1998-1999, Piotr Gapiïski
* Author : Piotr Gapiïski
* Creation Date : 09.03.99
* Current version : 1.0
* Translator : AmigaE v3.3a
*
*-- REVISION HISTORY
*
* 1.0 (10.03.99)
* o wydzielone procedury interfejsu ze ôwiatem "zewnëtrznym"
* o ustandaryzowna obsîuga GUI (w wiëkszoôci aliasy funkcji dla easygui)
*
* 0.1 (26.12.98)
*
*-- REV_END --*
*/
MODULE 'tools/EasyGUI','easygui/plugins/iconify'
MODULE 'intuition/intuition','intuition/screens','dos/dos','dos/var'
MODULE 'exec/nodes','exec/lists','utility/tagitem','libraries/reqtools','libraries/gadtools'
MODULE 'reqtools','amigalib/lists'
#ifdef DEBUG
MODULE 'tools/debug'
#define D(a,b) kputfmt(a,b)
#endif
#ifndef DEBUG
#define D(a,b)
#endif
EXPORT DEF prg_name, tt_pubname
DEF gui:PTR TO guihandle
EXPORT PROC guiSetup(title, desc, tags=NIL) HANDLE
->-
->- procedura tworzâca gui (okienko) programu na predefiniowanym ekranie
->- (lock jest zwalniany)
->- zwraca TRUE/FALSE
->-
DEF screen
gui := guiinitA(title, desc, tags)
screen := LockPubScreen(tt_pubname)
changescreen(gui, screen)
->-
->- przed otwarciem odtwórz ostatnie poîoûenie okienka
->-
loadlocation(gui)
openwin(gui)
IF (screen) THEN UnlockPubScreen(NIL, screen)
RETURN TRUE
EXCEPT
ENDPROC FALSE
EXPORT PROC guiCleanUp()
->-
->- procedura zamykajâca i zwalniajâca pamiëê wykorzystywanâ przez okienko
->- (gîówne)
->- nie zwraca ûadnych wartoôci
->-
IF (gui)
->-
->- zapisz ostatnie poîoûenie okienka
->-
savelocation(gui)
cleangui(gui)
ENDIF
gui := NIL
ENDPROC
EXPORT PROC guiOpen() IS openwin(gui)
EXPORT PROC guiClose() IS closewin(gui)
EXPORT PROC guiDisable() IS blockwin(gui)
EXPORT PROC guiEnable() IS unblockwin(gui)
EXPORT PROC guiGadgetAble(gadget, able=FALSE) IS setdisabled(gui, gadget, able)
EXPORT PROC guiCheckGadgets() IS checkgui(gui)
EXPORT PROC guiSigs()
->-
->- funkcja pobierajâca sygnaîy aktywne GUI
->- zwraca maskë sygnaîów lub 0
->-
DEF sigs
sigs := IF (gui) THEN gui.sig ELSE 0
ENDPROC sigs
EXPORT PROC guiHandle()
->-
->- funkcja obsîugujâca caîe GUI
->- zwraca TRUE/FALSE (FALSE gdy user zamknâî GUI)
->-
DEF res
res := guimessage(gui)
ENDPROC (res < 0)
EXPORT PROC guiInformUser(body,gads=NIL,args=NIL)
->-
->- jeûeli gui jest zainicjalizowane to pojawi sië reqtools requester
->- jeûeli nie, wiadomoôê zostanie wyôwietlona w okienku CLI
->- zwraca numer wybranego requestera lub FALSE gdy nie moûna go byîo
->- wyôwietliê
->-
DEF tmp[200]:STRING, rc, wnd:PTR TO window
IF (wnd := IF (gui) THEN gui.wnd ELSE NIL)
->-
->- okienko jest otwarte - wybierz requester
->-
IF (gads = NIL) THEN gads:=' _Ok '
rc := RtEZRequestA(body, gads, NIL, args,
[
RT_WINDOW, gui.wnd,
RTEZ_REQTITLE, prg_name,
RT_LOCKWINDOW, TRUE,
RT_REQPOS, REQPOS_CENTERWIN,
RT_UNDERSCORE, "_",
RTEZ_FLAGS, EZREQF_CENTERTEXT,
TAG_DONE
])
ELSE
->-
->- CLI - output
->-
stringFmt(tmp, body, args)
WriteF('\s\n', tmp)
rc := FALSE
ENDIF
ENDPROC rc
EXPORT PROC stringFmt(estring, format, args=NIL)
->-
->- formatuje stringi (format,args) i wynik zapisuje w estringu
->- akceptuje wszystkie symbole RawDoFmt(), args jest tablicâ argumentów
->- zakoïczonâ NIL
->- NIE SPRAWDZA CZY SFORMATOWANY TEXT MIESCI SIE W ESTRING'u!!!!
->- zwraca wskaúnik na estring
->-
MOVE.L format,A0
MOVE.L args,A1
MOVEM.L A2/A3/A6,-(A7)
LEA putProc(PC),A2
MOVE.L estring,A3
MOVE.L $4.W,A6
JSR -522(A6)
BRA.B endOf
putProc:
MOVE.B D0,(A3)+
RTS
endOf:
MOVEM.L (A7)+,A2/A3/A6
ENDPROC estring
EXPORT PROC isListEmpty(list:PTR TO lh) IS IsListEmpty(list)
->-
->- prywatnie (po godzinach)
->- procedury wspomagajâce obsîugë okienek programu
->-
PROC loadlocation(gui:PTR TO guihandle)
->-
->- odczytuje zmiennâ globalnâ z zapisanymi wspóîrzâdnymi gîownego okienka,
->- zmienia poîoûenie okienka (najlepiej jest przy EG_HILE/openwin()
->- nie zwraca ûadnej wartoôci
->-
DEF pos:ibox,len
len := GetVar(prg_name, pos, SIZEOF ibox, (GVF_GLOBAL_ONLY OR GVF_BINARY_VAR OR GVF_DONT_NULL_TERM))
IF (len <> -1)
movewin(gui, pos.left, pos.top)
sizewin(gui, pos.width, pos.height)
ENDIF
ENDPROC
PROC savelocation(gui:PTR TO guihandle)
->-
->- zapisuje poîoûenie i wymiary okienka od zmiennej globalnej
->- nie zwraca ûadnej wartoôci
->-
DEF pos:PTR TO ibox,wnd:PTR TO window
IF (wnd := gui.wnd)
pos := [wnd.leftedge, wnd.topedge, wnd.width, wnd.height]:ibox
SetVar(prg_name, pos, SIZEOF ibox, GVF_GLOBAL_ONLY)
ENDIF
ENDPROC